# -*- coding: utf-8 -*-
"""
@文件    :   users_堆积条形图.py
@时间    :   2022/05/25 09:12:54
@作者    :   YTNetMan
@版本    :   1.0
@邮箱    :   ytnetman@163.com
@版权    :   (C)Copyright 2022-2025
@分类    :   办公自动化
@功能    :   水平堆积柱状图的绘制
            堆积图的统计需要建立一个新数据列total ，用来排序
            bar():普通柱状图
            barh():水平柱状图
            stacked=True 是堆积图，否则是簇状图
            水平堆积图排序从大到小的顺序和普通图不同，ascending=True或者不写
            用来正常显示中文标签
            plt.rcParams['font.sans-serif'] = ['SimHei']


"""

import matplotlib.pyplot as plt
import pandas as pd

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']

users = pd.read_excel('./doc/users_h.xlsx')
#插入新列，用于排序
users['Total'] = users['Oct'] +users['Nov']+users['Dec']
#注意这里的ascending=True
users.sort_values(by='Total',inplace=True,ascending=True)
print(users)
#barh 水平图
#stacked 堆积图，也就是累加图
#users.plot.barh(x='Name',y=['Oct','Nov','Dec'],title='Users Behavior',stacked=True)
#直接显示中文标签会乱码
users.plot.barh(x='Name',y=['Oct','Nov','Dec'],title='中文标题',stacked=True)
plt.tight_layout()
plt.show()
